X11: Don't assume all displays are X11 displays
authorMatthias Clasen <mclasen@redhat.com>
Fri, 24 Oct 2014 22:38:15 +0000 (18:38 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 24 Oct 2014 23:05:09 +0000 (19:05 -0400)
When iterating over the list of displays gotten from the
display manager, we have to check if what we got is actually
an X11 display.

gdk/x11/gdkdisplay-x11.c
gdk/x11/gdkmain-x11.c

index 064b56f4d237f7259c7915e4cb1e568912392fef..a964e2ae733b15a69278ea0e23847cb3e68fcd99 100644 (file)
@@ -1947,7 +1947,8 @@ gdk_x11_lookup_xdisplay (Display *xdisplay)
 
   for (l = list; l; l = l->next)
     {
-      if (GDK_DISPLAY_XDISPLAY (l->data) == xdisplay)
+      if (GDK_IS_X11_DISPLAY (l->data) &&
+          GDK_DISPLAY_XDISPLAY (l->data) == xdisplay)
         {
           display = l->data;
           break;
@@ -2801,7 +2802,10 @@ gdk_x11_set_sm_client_id (const gchar *sm_client_id)
 
   displays = gdk_display_manager_list_displays (gdk_display_manager_get ());
   for (l = displays; l; l = l->next)
-    set_sm_client_id (l->data, sm_client_id);
+    {
+      if (GDK_IS_X11_DISPLAY (l->data))
+        set_sm_client_id (l->data, sm_client_id);
+    }
 
   g_slist_free (displays);
 }
index 22c7b95519db0b752799d4d9e4c8f39b2ff69192..9ab7c243b2027bc3c292362759ed2d663b984bbb 100644 (file)
@@ -279,7 +279,8 @@ gdk_x_error (Display         *xdisplay,
         {
           GdkX11Display *gdk_display = displays->data;
 
-          if (xdisplay == gdk_display->xdisplay)
+          if (GDK_IS_X11_DISPLAY (gdk_display) &&
+              xdisplay == gdk_display->xdisplay)
             {
               error_display = GDK_DISPLAY (gdk_display);
               g_slist_free (displays);